package my.menu;

import my.dao.daoImpl.BookDao;
import my.dao.daoImpl.BookTypeDao;
import my.dao.daoImpl.UserDao;
import my.menu.menuImp.AdminMainMenu;
import my.menu.menuImp.LoginMenu;
import my.menu.menuImp.ReaderMainMenu;

/**
 * @author 星环
 * @date 2022/10/31 16:46:09
 * @description 主要流程控制 先登录，再根据用户类别生成菜单
 */
public class MenuManager{

    /**
     * 调用这个方法开启系统
     */
    public void start(){
        boolean needContinue = true;
        while (true){
            LoginMenu loginMenu = new LoginMenu();
            loginMenu.entrance();
            //调用loginMenu的结果是用户登录或者退出，如果用户登录，
            //用户的信息会保存在user里
            //使用getUser取得loginMenu的产物

            if(loginMenu.getUser() == null){
                //说明用户退出
                break;
            }

            //如果用户没有退出，即登录成功
            switch (loginMenu.getUser().getRole()) {
                //根据用户角色创建菜单
                //将读者的信息传递给菜单，方便后面用，例如借书时需要读者的id
                case ADMIN -> new AdminMainMenu(loginMenu.getUser()).entrance();
                case READER -> new ReaderMainMenu(loginMenu.getUser()).entrance();
            }
        }
        //退出前保存
        UserDao.getInstance().save();
        BookDao.getInstance().save();
        BookTypeDao.getInstance().save();
        System.out.println("当前数据已经保存，系统退出");
    }

}
